home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 April: Mac OS SDK / Dev.CD Apr 96 SDK / Dev.CD Apr 96 SDK1.toast / Development Kits (Disc 1) / OpenDoc Development Framework / ODFDev / ODF / Examples / Draw / Include / DrawCmds.h < prev    next >
Encoding:
Text File  |  1995-11-08  |  7.3 KB  |  263 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                DrawCmds.h
  4. //    Release Version:    $ 1.0d11 $
  5. //
  6. //    Author:                Mary Boetcher
  7. //
  8. //    Copyright:    © 1993, 1995 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef DRAWCMDS_H
  13. #define DRAWCMDS_H
  14.  
  15. // ----- FrameWork Includes -----
  16.  
  17. #ifndef FWCMD_H
  18. #include "FWCmd.h"
  19. #endif
  20.  
  21. // ----- OS Includes -----
  22.  
  23. #ifndef FWCOLOR_H
  24. #include "FWColor.h"
  25. #endif
  26.  
  27. #ifndef FWPAT_H
  28. #include "FWPat.h"
  29. #endif
  30.  
  31. #ifndef FWRECT_H
  32. #include "FWRect.h"
  33. #endif
  34.  
  35.  
  36. //========================================================================================
  37. //    Forward Declarations
  38. //========================================================================================
  39.  
  40. #if FW_LIB_EXPORT_PRAGMAS
  41. #pragma lib_export on
  42. #endif
  43. class FW_CLASS_ATTR FW_CFrame;
  44. class FW_CLASS_ATTR FW_CPrivOrderedCollection;
  45. #if FW_LIB_EXPORT_PRAGMAS
  46. #pragma lib_export off
  47. #endif
  48.  
  49. class FW_CLASS_ATTR CBaseShape;
  50. class FW_CLASS_ATTR CDrawPart;
  51. class FW_CLASS_ATTR CDrawFrame;
  52. class FW_CLASS_ATTR CDrawSelection;
  53.  
  54. //========================================================================================
  55. //     Constants - Command numbers
  56. //========================================================================================
  57.  
  58. const ODCommandID cDrawShapeCommand        = 3000;
  59. const ODCommandID cChangeFillColor        = 3001;
  60. const ODCommandID cChangeFillPattern    = 3002;
  61. const ODCommandID cChangeFrameColor        = 3003;
  62. const ODCommandID cChangeFramePattern    = 3004;
  63. const ODCommandID cChangeRenderVerb        = 3005;
  64. const ODCommandID cResizeCommand        = 3006;
  65.  
  66. //========================================================================================
  67. // class CDrawShapeCommand - Draw a new shape and add it to the document
  68. //========================================================================================
  69.  
  70. class FW_CLASS_ATTR CDrawShapeCommand : public FW_CCommand
  71. {
  72.   public:
  73.  
  74.     CDrawShapeCommand(Environment* ev, 
  75.                     CDrawPart* part, 
  76.                     FW_CFrame* frame,
  77.                     CDrawSelection* selection,
  78.                     CBaseShape* newShape);
  79.  
  80.     virtual ~ CDrawShapeCommand();
  81.  
  82.     // --- Command overrides
  83.     virtual void DoIt(Environment* ev);            // Override
  84.     virtual void UndoIt(Environment* ev);            // Override
  85.     virtual void RedoIt(Environment* ev);            // Override
  86.     virtual void CommitUndone(Environment* ev);    // Override
  87.  
  88.   protected:
  89.     CBaseShape*        fNewShape;
  90.     CDrawPart*        fDrawPart;
  91.     CDrawSelection*    fDrawSelection;
  92.  
  93.     void SelectSavedShape(Environment* ev);
  94. };
  95.  
  96. //========================================================================================
  97. // class CResizeShapeCommand - Change size of selected shapes
  98. //========================================================================================
  99.  
  100. class FW_CLASS_ATTR CResizeShapeCommand : public FW_CCommand
  101. {
  102.   public:
  103.  
  104.     CResizeShapeCommand(Environment* ev, 
  105.                         CDrawPart* part,
  106.                         FW_CFrame* frame,
  107.                         CDrawSelection* selection,
  108.                         const FW_CRect& srcRect,
  109.                         const FW_CRect& dstRect);
  110.  
  111.     virtual ~ CResizeShapeCommand();
  112.  
  113.     // --- Command overrides
  114.     virtual void DoIt(Environment* ev);            // Override
  115.     virtual void UndoIt(Environment* ev);            // Override
  116.     virtual void RedoIt(Environment* ev);            // Override
  117.     virtual void SaveUndoState(Environment* ev);    // Override
  118.  
  119.   protected:
  120.     void Redraw(Environment* ev);
  121.     void SelectChangedShapes(Environment* ev);
  122.  
  123.   protected:
  124.     CDrawPart*        fDrawPart;
  125.     FW_CFrame*        fFrame;
  126.     CDrawSelection*    fDrawSelection;
  127.     FW_CRect        fSourceRect;
  128.     FW_CRect        fDestRect;
  129.     ODShape*        fUpdateShape;
  130.     FW_CPrivOrderedCollection* fChangedShapeList;
  131. };
  132.  
  133. //========================================================================================
  134. // class CChangeShapeCommand - Change shape attributes: color, pattern, render verb
  135. //========================================================================================
  136.  
  137. class FW_CLASS_ATTR CChangeShapeCommand : public FW_CCommand
  138. {
  139.   public:
  140.  
  141.     CChangeShapeCommand(Environment* ev, 
  142.                         ODCommandID id,
  143.                         CDrawPart* part, 
  144.                         FW_CFrame* frame,
  145.                         CDrawSelection* selection);
  146.  
  147.     virtual ~ CChangeShapeCommand();
  148.  
  149.     // --- Command overrides
  150.     virtual void DoIt(Environment* ev);            // Override
  151.     virtual void UndoIt(Environment* ev);            // Override
  152.     virtual void RedoIt(Environment* ev);            // Override
  153.     virtual void SaveUndoState(Environment* ev);    // Override
  154.  
  155.   protected:
  156.  
  157.     // --- Must be overridden
  158.     virtual void DoChange(Environment* ev) = 0;
  159.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index) = 0;
  160.  
  161.     void SelectChangedShapes(Environment* ev);
  162.  
  163.   protected:
  164.     CDrawPart*                fDrawPart;
  165.     CDrawSelection*            fDrawSelection;
  166.     FW_CPrivOrderedCollection*        fChangedShapeList;
  167.         // list of shapes affected by command
  168. };
  169.  
  170. //========================================================================================
  171. // CChangeColorCommand
  172. //========================================================================================
  173.  
  174. class FW_CLASS_ATTR CChangeColorCommand : public CChangeShapeCommand
  175. {
  176.   public:
  177.  
  178.     CChangeColorCommand(Environment* ev, 
  179.                         ODCommandID commandID,
  180.                         CDrawPart* part, 
  181.                         FW_CFrame* frame,
  182.                         CDrawSelection* selection,
  183.                         const FW_CColor& newColor);
  184.  
  185.     virtual ~ CChangeColorCommand();
  186.  
  187.     // --- CChangeShapeCommand overrides
  188.   protected:
  189.     virtual void DoChange(Environment* ev);        // Override
  190.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  191.   public:
  192.     virtual void SaveUndoState(Environment* ev);    // Override
  193.  
  194.   protected:
  195.     FW_CColor*            fOldColors;        // array of FW_CColor
  196.     FW_CColor            fNewColor;
  197.     FW_Boolean            fIsFill;
  198. };
  199.  
  200. //========================================================================================
  201. // CChangePatternCommand
  202. //========================================================================================
  203.  
  204. class FW_CLASS_ATTR CChangePatternCommand : public CChangeShapeCommand
  205. {
  206.   public:
  207.  
  208.     CChangePatternCommand(Environment* ev, 
  209.                         ODCommandID commandID,
  210.                         CDrawPart* part, 
  211.                         FW_CFrame* frame,
  212.                         CDrawSelection* selection,
  213.                         const FW_PPattern& newPattern);
  214.  
  215.     virtual ~ CChangePatternCommand();
  216.  
  217.     // --- CChangeShapeCommand overrides
  218.   protected:
  219.     virtual void DoChange(Environment* ev);        // Override
  220.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  221.  
  222.   public:
  223.     virtual void SaveUndoState(Environment* ev);    // Override
  224.  
  225.   protected:
  226.     FW_PPattern*        fOldPatterns;    // array of FW_PPattern
  227.     FW_PPattern            fNewPattern;
  228.     unsigned short        fCount;
  229.     FW_Boolean            fIsFill;
  230. };
  231.  
  232. //========================================================================================
  233. // CChangeRenderVerbCommand
  234. //========================================================================================
  235.  
  236. class FW_CLASS_ATTR CChangeRenderVerbCommand : public CChangeShapeCommand
  237. {
  238.   public:
  239.  
  240.     CChangeRenderVerbCommand(Environment* ev, 
  241.                             CDrawPart* part, 
  242.                             FW_CFrame* frame,
  243.                             CDrawSelection* selection,
  244.                             unsigned short newRenderVerb);
  245.  
  246.     virtual ~ CChangeRenderVerbCommand();
  247.  
  248.     // --- CChangeShapeCommand overrides
  249.   protected:
  250.     virtual void DoChange(Environment* ev);        // Override
  251.     virtual void UndoShape(Environment* ev, CBaseShape* shape, unsigned long index);    // Override
  252.   public:
  253.     virtual void SaveUndoState(Environment* ev);    // Override
  254.  
  255.   private:
  256.     unsigned short    fNewRenderVerb;
  257.     unsigned short*    fOldRenderVerbs;    // array of unsigned short
  258. };
  259.  
  260.  
  261.  
  262. #endif
  263.